#ifndef _EDGE_H
#define _EDGE_H

#include <iostream>
#include "Point.h"
#include "Triangle.h"

using namespace std;

class Edge {
public:
    //variables that determine the status of the Edge
	const static int OPEN = 0;
	const static int CLOSED = 1;
	const static int HALF_OPEN = 2;
	const static int WILDCARD = 3;
    Edge(Point* point1, Point* point2);                                                 //Constructor. Created just for comparing edges in the Mazeprint
	Edge(Point* point1, Point* point2, Triangle* neighbour1, Triangle* neighbour2);     //Constructor. Usual Constructor for Creating Edge
	virtual ~Edge();
	Point* getPoint1();
	Point* getPoint2();
	Triangle* getTriangle1();                                                           //Return triangle holding this edge
	Triangle* getTriangle2();
	bool equals(Edge* other);               //Compares if this edge is equal to another edge
	void print();                           //prints the edge
	int status;                             //shows status
protected:
	Point* firstPoint;
	Point* secondPoint;
	Triangle* adjacentTriangle1;
	Triangle* adjacentTriangle2;

};


#endif
